package Workflow.States;

import Model.Core.IElement;
import Model.Draw.Events.DrawCompleteListener;
import Model.Draw.Events.ShowTipListener;
import Workflow.Util.IncompatibleStateException;
import java.util.List;

/**
 * Projeto de TCC: Editor de Diagramas de Comunicação em UML.
 * @author José Luz e Michele Puretachi
 */
public interface IState {

    IState nextState();

    void registerDrawCompleteListener(DrawCompleteListener listener);

    void registerShowTipsListener(ShowTipListener listener);

    IElement getCurrentElement();

    void setCurrentElement(IElement element) throws IncompatibleStateException;

    void setItem(Object item) throws IncompatibleStateException;

    List<Object> getItem();
}